/**
 * 通用表单操作
 */
var commonFormFun = {
	/**
	 * 条件查询
	 * @param datagrId 表格id
	 * @param formId 搜索表单id
	 * @param url  提交请求地址
	 */
	doSearch : function(datagrId,formId,url) {
		url = contextPath + url;
		var rs = true;
		rs = $('#'+formId).form("validate");
		if(rs){
			var datagrid =$('#' + datagrId);
			
			datagrid.datagrid('options').url = url;
			// 修改表格配置
			console.info(datagrid.datagrid('options').url);
			// 提交查询表单数据前，需要对表单数据进行处理customUtils.serializeObject
			datagrid.datagrid('load', customUtils.serializeObject(formId));
		}else{
			$.messager.alert('错误', '查询条件错误，请仔细检查查询条件', 'warning');
			return;
		}
	
	},
	
	/**
	 * 创建对话框，修改、新增时会使用
	 * @param dialogId 表格id
	 * @param titleText 对话框标题
	 * @param widthNum 宽度
	 * @param heightNum 高度
	 * @returns
	 */
	openDialog : function(dialogId,titleText,widthNum,heightNum) {
		if ($('#checkError').length > 0 ) { 
			$('#checkError').html("");
		} 
		return $('#'+dialogId).dialog({
			title : titleText,
			width : widthNum,
			height : heightNum,
			closed : false,
			cache : false,
			modal : true
		});
	},
	
	/**
	 * 弹出新增对话框
	 * @param formId 表单id 
	 * @param dialogId 表格id
	 * @param titleText 对话框标题
	 * @param widthNum 宽度
	 * @param heightNum 高度
	 */
	add : function(formId,dialogId,titleText,widthNum,heightNum) {
		// 清空form表单
		$('#' + formId).form('clear');
		console.info($("#_method").val());
		commonFormFun.clearErrorMsg(formId);
		var addDialog = commonFormFun.openDialog(dialogId,titleText,widthNum,heightNum);
		// 打开表单对话框
		addDialog.dialog('open');
	},

	/**
	 * 用于提交新增、修改表单数据，数据保存成功后刷新表格
	 * @param datagrId 表格id
	 * @param formId 表单id
	 * @param editDialogId 对话框id
	 * @param urlPath 提交请求地址
	 */
	saveEntity : function(datagrId,formId,editDialogId,urlPath) {
		console.info($("#_method").val());
		// 使用submit方法，提交表单数据
		$('#' + formId).form('submit', {
			// 请求路径
			url : urlPath,
			onSubmit : function() {
				// 验证表单数据
				var rs = $(this).form("validate");
				// 浏览器中使用f12，可以查看日志信息
				console.info(urlPath+">>>>>>");
				console.info(rs+"common");
				return rs;
			},
			// 表单数据处理成功，并用result接收服务器的响应
			success : function(result) {
				console.info(result);
				// 将字符串转换为json对象
				var result = eval('(' + result + ')');
				// 如果是字段校验错误信息
				if (result.fieldErrMsg) {
					var json = result.fieldErrMsg;
					// 循环显示所有错误信息，错误div的id规则：输入框的name+'Msg'
					customUtils.showFielError(json);

				} else if (result.checkErrMsg) {
					// 业务错误
					var msgDiv = $("#checkError");
					msgDiv.html(result.checkErrMsg);
					msgDiv.css({'color': 'red'});
				} else if (result.sysErrorMsg) {
					// 系统错误
					var msgDiv = $("#checkError");
					msgDiv.html(result.sysErrorMsg);
					msgDiv.css({'color': 'red'});
				} else {
					// 操作成功
					$.messager.show({
						title : '操作提示',
						msg : '数据已保存'
					});
					$('#'+editDialogId).dialog('close'); // close the dialog
					$('#' + datagrId).datagrid('reload'); // 数据发生变化重新加载表格数据
				}
			}
		});
	},
	
	/**
	 * 更新前查询最新数据
	 * datagrId为''时，不从datagrid中取值(id)
	 * flag是post、get、delete、put中的一种，form中必须有隐藏域_method
	 * urlPath为''时，不会远程加载数据
	 */
	updateInit : function(datagrId,formId,flag,urlPath,dialogId,titleText,widthNum,heightNum) {
		var dataValue='';
		if(datagrId!=''){
			var datagridObj = $('#' + datagrId);
			// 获取选中的行
			var rows = datagridObj.datagrid('getChecked');
			if (rows.length > 1) {
				$.messager.alert('警告', '只能选择一行信息进行修改操作', 'warning');
				return;
			}
			var row = datagridObj.datagrid('getSelected');
			if (row) {
				dataValue = row.id;				
			}else{
				$.messager.alert('警告', '请选择一行信息进行修改操作', 'warning');
				return;
			}
		}		
		var fm = $('#' + formId)
		//清除错误信息
		commonFormFun.clearErrorMsg(formId);
		// 清空form表单
		fm.form('clear');
		$("#_method").val(flag);
		console.info($("#_method").val());
		//对话框
		var addDialog=commonFormFun.openDialog(dialogId,titleText,widthNum,heightNum);		
		// 打开对话框
		addDialog.dialog('open');
		console.info("#dataValue" + dataValue);
		//可以不传url
		if(urlPath!=''){
			// 第二个参数是查询请求，查询最新的数据 
			fm.form('load', urlPath + dataValue);
		}
	},
	/**
	 * 删除表格中的信息
	 * @param datagrId 表格id
	 * @param urlPath 请求坡地
	 * @param titleText 对话框标题
	 * @param contentText 提示内容
	 */
	destroyEntity : function(datagrId,urlPath,titleText,contentText) {
		var datagrid = $('#' + datagrId);
		// 获取已选中的行
		var row = datagrid.datagrid('getChecked');
		var ids = new Array();
		// 取出行中的id,并保存到ids数组
		for (var i = 0; i < row.length; i++) {
			ids.push(row[i].id);
		}
		// 直接将数组转换为字符串
		var idlist = JSON.stringify(ids);		
		// 判断是否选中
		if (row) {
			// 提示是否删除
			$.messager.confirm(titleText, contentText, function(r) {
						// 确定提交数据
						if (r) {
							$.ajax({
								type : 'delete',
								contentType : 'application/json',
								// 请求路径
								url : urlPath,
								processData : false,
								dataType : 'json',
								data : idlist,
								// 服务器处理成功的响应
								success : function(data) {
									$.messager.show({
										title : '操作提示',
										msg : '删除成功'
									});
									datagrid.datagrid('reload'); // 删除数据后重新加载表格数据
								},
								// 异常响应
								error : function(data) {
									$.messager.show({ // show error message
										title : 'Error',
										msg : data.errorMsg
									});
								}
							});
						}
					});
		}
	},
	
	clearErrorMsg:function(formId){
		if ($('#checkError').length > 0 ) { 
			$('#checkError').html("");
		} 
	   $("#"+formId+" input").each(function(index,obj) {
		   if(obj && obj.name){
			   var vid="#"+obj.name+"Msg";
			   if ($(vid).length > 0 ) {
				 $(vid).text('');
			   }			   
		   }
		});
	},
};







